12898
16693
Esta pregunta ya tiene respuestas aquí:
Invertir una cadena en Python
(29 respuestas)
Cerrado hace 4 años.
Estoy tratando de revertir una cadena y uso el siguiente código, pero el valor de la lista inversa resultante es Ninguno.
El código:
str_a = 'Esto es conmovedor'
rev_word = str_a.split ()
rev_word = rev_word.reverse ()
rev_word = '' .join (rev_word)
Devuelve TypeError. ¿Por qué? 
.reverse () devuelve Ninguno. Por lo tanto, no debería asignarlo a una variable.
Use esto en su lugar:
stra = 'Esto es una cadena'
revword = stra.split ()
revword.reverse ()
revword = ''. join (revword)
He ejecutado el código en IDEOne para que pueda ver el resultado. (También observe que la salida es stringaisThis; en su lugar, puede usar '' .join (revword), con un espacio.)
También tenga en cuenta que el método que ha proporcionado solo invierte las palabras, no el texto. @ ron.rothman proporcionó un enlace que detalla cómo invertir una cadena en su totalidad.
|
Esta es mi forma favorita de invertir una cadena:
stra = "Esto es una cadena"
revword = stra [:: - 1]
print (revword) # "gnirts a si sihT
o, si desea invertir el orden de las palabras:
revword = "" .join (stra.split () [:: - 1])
print (revword) # "string a is This"
:)
|
Varias inversiones en una cuerda:
instring = 'Esto es una cadena'
reversedstring = instring [:: - 1]
imprimir cadena invertida # gnirts a sihT
wordsreversed = '' .join (palabra [:: - 1] por palabra en instring.split ())
imprimir palabras invertidas # sihT si a gnirts
revwordorder = '' .join (palabra por palabra en instring.split () [:: - 1])
print revwordorder # string a is This
revwordandorder = '' .join (palabra [:: - 1] por palabra en instring.split () [:: - 1])
imprimir revwordandorder # gnirts a si sihT
|
Para referencia futura, cuando un objeto tiene un método como [] .reverse (), generalmente realiza esa acción en el objeto (es decir, la lista está ordenada y no devuelve nada, Ninguno) en contraste con las funciones integradas como sorted que realizan una acción en un objeto y devuelve un valor (es decir, la lista ordenada)
|
>>> s = 'esto es una cadena'
>>> s [:: - 1]
'gnirts un siht'
>>> '' .join (invertido (s))
'gnirts un siht'
|
El bucle for itera la cadena desde el final (última letra) hasta el inicio (primera letra)
>>> s = 'También puedes probar esto:]'
>>> rev = ''
>>> para i en el rango (len (s) - 1, -1, -1):
... rev + = s [i]
>>> rev
']: oot siht yrt nac uoY'
|
Basado en comentarios y otras respuestas:
str_a = 'esto es una cadena'
rev_word = '' .join (invertido (str_a.split ()))
El encadenamiento de métodos funciona en Python después de todo ...
|
El reverso de la lista se puede realizar de más de una forma. Como se mencionó en las respuestas anteriores, dos son muy prominentes, uno con función reverse () y dos con función de corte. Estoy dando algunas ideas sobre cuál deberíamos preferir.
Siempre debemos usar la función reverse () para invertir una lista de Python. Dos razones, una reversión in situ y dos más rápidas que otras.
Tengo algunas cifras para apoyar mi respuesta
En [15]: len (l)
Fuera [15]: 1000
En [16]:% timeit -n1 l.reverse ()
1 bucle, mejor de 3: 7,87 µs por bucle
En [17]:% timeit -n1 l [:: - 1]
1 bucle, mejor de 3:10 µs por bucle
Para la lista de 1000 enteros, la función reverse () se desempeñó mejor en comparación con el corte.
|
No es la respuesta que estás buscando? Explore otras preguntas etiquetadas python o formule su propia pregunta.